
#ifndef _GL_DRAWFUNCTIONS_SKEL_H_
#define _GL_DRAWFUNCTIONS_SKEL_H_

#include "typedefs.h"
#include "meshdef/mesh.h"
#include "meshdef/gskeleton.h"
#include "meshdef/skeletonsMatcher.h"

void drawSkeleton(GSkeleton *s);
void drawSkeletonJoints(GSkeleton *skel);

/// Renders an skeleton pose
void glDrawSkeleton(GSkeleton *s, int meshrendermode_mask=SMOOTH);
/// Draws the skeleton's joints
void glDrawSkeletonJoints(Skeleton *s);
/// Draws the skeleton's bones
void glDrawSkeletonBones(Skeleton *s, bool withjoints=true);

void glDrawBranches(SkeletonsMatcher *matcher);

///
/// below drawing function for rigging/skinning
///

/// Renders rigging/skining data

/// Render the mesh visualizing the rigging/skinning results
void glDrawRiggingSkinning(Mesh *m, GSkeleton *s, int mode_mask);
void glDrawRigging(Mesh *model, bool usingbones);
void glDrawRiggingEdges(Mesh *m, GSkeleton *s, bool usingbones);
void glDrawSkinning(Mesh *model);

/// Generates a table with several rgb colors
void generateColors();

#endif
